ostree/config: Check for too many args
authorMatthew Leeds <matthew.leeds@endlessm.com>
Fri, 1 Mar 2019 00:19:41 +0000 (16:19 -0800)
committerAtomic Bot <atomic-devel@projectatomic.io>
Fri, 1 Mar 2019 16:29:44 +0000 (16:29 +0000)
Currently it's not an error to provide too many arguments to an ostree
config command. Change it so we print usage information in that case,
and update the unit tests.

Closes: #1743
Approved by: cgwalters

src/ostree/ot-builtin-config.c
tests/test-config.sh

index 8e00af089c87cf3224cd1b57c6584f898e6cf1bc..811a8381342bc5b933104902e09e6b1b94ccc3a5 100644 (file)
@@ -71,6 +71,7 @@ ostree_builtin_config (int argc, char **argv, OstreeCommandInvocation *invocatio
   g_autofree char *section = NULL;
   g_autofree char *key = NULL;
   g_autoptr(GKeyFile) config = NULL;
+  int correct_argc;
 
   context = g_option_context_new ("(get KEY|set KEY VALUE|unset KEY)");
 
@@ -85,6 +86,17 @@ ostree_builtin_config (int argc, char **argv, OstreeCommandInvocation *invocatio
 
   op = argv[1];
 
+  if (!strcmp (op, "set"))
+    correct_argc = 4;
+  else
+    correct_argc = 3;
+
+  if (argc > correct_argc)
+    {
+      ot_util_usage_error (context, "Too many arguments given", error);
+      return FALSE;
+    }
+
   if (!strcmp (op, "set"))
     {
       if (opt_group)
index 62f63006459daa776b31e519f5f53bc1c27ecbfe..b98f8d4760690804d908f86542e3aac3e7e6e0d8 100755 (executable)
@@ -41,6 +41,12 @@ assert_file_has_content list.txt "1"
 assert_file_has_content list.txt "Flathub"
 assert_file_has_content list.txt "true"
 assert_file_has_content list.txt "http://example.com/ostree/repo/"
+
+# Check that it errors out if too many arguments are given
+if ${CMD_PREFIX} ostree config --repo=repo get --group=core lock-timeout-secs extra 2>err.txt; then
+    assert_not_reached "ostree config get should error out if too many arguments are given"
+fi
+assert_file_has_content err.txt "error: Too many arguments given"
 echo "ok config get"
 
 ${CMD_PREFIX} ostree config --repo=repo set core.mode bare-user-only
@@ -52,6 +58,12 @@ assert_file_has_content repo/config "bare-user-only"
 assert_file_has_content repo/config "Nightly Flathub"
 assert_file_has_content repo/config "false"
 assert_file_has_content repo/config "http://example.com/ostree/"
+
+# Check that it errors out if too many arguments are given
+if ${CMD_PREFIX} ostree config --repo=repo set --group=core lock-timeout-secs 120 extra 2>err.txt; then
+    assert_not_reached "ostree config set should error out if too many arguments are given"
+fi
+assert_file_has_content err.txt "error: Too many arguments given"
 echo "ok config set"
 
 # Check that "ostree config unset" works
@@ -76,4 +88,10 @@ ${CMD_PREFIX} ostree config --repo=repo unset --group='remote "aoeuhtns"' 'xa.ti
 # Check that the key doesn't need to exist
 ${CMD_PREFIX} ostree config --repo=repo set --group='remote "aoeuhtns"' 'xa.title-is-set' 'false'
 ${CMD_PREFIX} ostree config --repo=repo unset --group='remote "aoeuhtns"' 'xa.title'
+
+# Check that it errors out if too many arguments are given
+if ${CMD_PREFIX} ostree config --repo=repo unset core.lock-timeout-secs extra 2>err.txt; then
+    assert_not_reached "ostree config unset should error out if too many arguments are given"
+fi
+assert_file_has_content err.txt "error: Too many arguments given"
 echo "ok config unset"